<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Screen Space Ambient Occlusion</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Screen_Space_Ambient_Occlusion"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Screen_Space_Ambient_Occlusion rootpage-Screen_Space_Ambient_Occlusion skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Screen Space Ambient Occlusion</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">
<p><b>Screen Space Ambient Occlusion</b> (SSAO) ist eine Rendering-Technik bei Computer-Grafik für die effiziente Annäherung des häufig verwendeten Effekts „<a href="Umgebungsverdeckung" title="Umgebungsverdeckung">Ambient Occlusion</a>“ in Echtzeit. Es wurde von Vladimir Kajalin während seiner Arbeit bei <a href="Crytek" title="Crytek">Crytek</a> entwickelt und wurde zum ersten Mal im Jahr 2007 bei <i><a href="Crysis" title="Crysis">Crysis</a></i>, einem Videospiel von Crytek für Microsoft Windows eingesetzt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Implementierung">Implementierung</h2></div>
<p>Der Algorithmus wird als ein <a href="Pixel-Shader" title="Pixel-Shader">Pixel-Shader</a> implementiert, durch Analyse der <a href="Tiefenpuffer" class="mw-redirect" title="Tiefenpuffer">Depth Buffer</a> einer Szenerie, die in einer Textur gespeichert werden. Für jedes <a href="Pixel" title="Pixel">Pixel</a> auf dem Bildschirm tastet ein Pixelshader die Tiefenwerte um ein Pixel herum ab und versucht für die abgetasteten Punkte den jeweiligen Betrag der Okklusion zu errechnen. In seiner einfachsten Implementierung errechnet sich der Okklusions- (Verdeckungs-) Faktor lediglich anhand des Unterschieds der Tiefenwerte zwischen dem abgetasteten Punkt und dem aktuellen Punkt.
</p><p>Ohne zusätzliche intelligente Lösungen müsste eine solche Brute-Force-Methode für eine akzeptable Bildqualität etwa 200 mal pro errechnetem Pixel Texturdaten auslesen. Spiele wie <i><a href="Assassin%E2%80%99s_Creed_IV%3A_Black_Flag" title="Assassin’s Creed IV: Black Flag">Assassin’s Creed IV: Black Flag</a></i> nutzen diese Technik, wobei alternative Mechanismen wie "technology HBAO+" eine geringere Laufzeit haben.
</p><p>Um die Leistung für den Spieler zu verbessern, wird oft darauf zurückgegriffen, AO-Shader bei halber Auflösung zu rendern, was die Rechenlaufzeit in der Theorie um 75 % reduziert. Dabei vermindert sich die Qualität jedoch eher unmerklich, da AO oft als subtiler Effekt genutzt wird.
</p><p>Um gute Ergebnisse mit weit weniger Zugriffen auf die Texturdaten zu bekommen, erfolgt die Abtastung mittels eines zufällig rotierenden Kernels. Die Kernel-Ausrichtung wird alle <i>n</i> Bildschirmpixel wiederholt, um das Rauschen im endgültigen Bild auf ein Hochfrequenz-Rauschen zu limitieren. Anschließend wird dieses Hochfrequenzrauschen zum größten Teil unter Berücksichtigung von möglichen Unterbrechungen oder Störungen in den Tiefen-Werten (mit Methoden, um beispielsweise bei den Nachbarpixeln die normalen mit den entsprechenden Tiefenwerten zu vergleichen) weichgezeichnet und somit reduziert oder komplett entfernt. Solche Methoden verringern die Anzahl der Tiefenwert-Abtastungen der Pixel auf etwa 16 per Pixel oder weniger, bei immer noch sehr guter Bildqualität. Erst durch diese Methoden kann softwareseitiges SSAO in Echtzeitanwendungen (z. B. Computerspielen) verwendet werden.
</p><p>Im Vergleich zu anderen Ambient-Occlusion-Methoden hat SSAO die folgenden Vorteile:
</p>
<ul><li>Es funktioniert unabhängig von der Komplexität der Szene.</li>
<li>Die Daten müssen nicht vorbereitet werden, es gibt keine zusätzlichen Ladezeiten und keine Speicherzuordnungen im Systemspeicher.</li>
<li>Funktioniert mit dynamischen Szenerien.</li>
<li>Funktioniert für jedes Pixel auf dem Bildschirm auf die gleiche konsistente Weise.</li>
<li>Keine <a href="CPU-Auslastung" class="mw-redirect" title="CPU-Auslastung">CPU-Auslastung</a> – der Vorgang kann komplett von der GPU ausgeführt werden.</li>
<li>Kann vergleichsweise einfach in jede moderne Grafik-Pipeline integriert werden.</li></ul>
<p>Das Verfahren hat jedoch auch einige Nachteile:
</p>
<ul><li>Die Berechnung ist auf einen kleinen Bereich reduziert, und das Ergebnis ist in vielen Fällen von der jeweiligen Ansicht abhängig, da das Ergebnis von SSAO allein von den jeweils angrenzenden Texel-Tiefen abhängig ist, völlig ohne jegliche Berücksichtigung der Geometrie und anderen Faktoren der Objekte.</li>
<li>Es ist schwierig, beim Blurring das Hochfrequenzrauschen zu entfernen, ohne dabei Tiefen-Diskontinuitäten wie Objektkanten zu beeinträchtigen (der Effekt sollte nicht „ausbluten“ auf andere Objekte). Ein Beispiel für einen unerwünschten Effekt kann man in <i><a href="Metro_2033_(Computerspiel)" title="Metro 2033 (Computerspiel)">Metro 2033</a></i> (2010) sehen, wenn man mit dem Messer nahe an einer Wand steht. In diesem Fall bildet sich auf der Wand eine recht große, dunkle Zone um das Messer herum.</li>
<li>Je nachdem, welche Techniken für das <a href="Bildsynthese" title="Bildsynthese">Rendern</a> verwendet werden und wie intensiv der AO-Effekt angewandt wird, kann sich dieser deutlich von den „regulären“ Schatten abheben. Gerade ein zu großer Radius oder ein zu hoher Intensitätswert können schnell auffallen.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Umgebungsverdeckung" title="Umgebungsverdeckung">Umgebungsverdeckung</a></li>
<li><a href="CryEngine" title="CryEngine">CryEngine</a></li>
<li><a href="Unreal_Engine#Unreal_Engine_3" title="Unreal Engine">Unreal Engine 3</a></li>
<li><a href="Unity_(Spielengine)" class="mw-redirect" title="Unity (Spielengine)">Unity (Spielengine)</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2023-12-21" href="https://de.wikipedia.org/wiki/?title=Screen_Space_Ambient_Occlusion&oldid=240400025">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>